"use strict";
/**
 * @author luzhenfang
 * @date 2020 04 27
 * @description TS 函数
 *     在ts 中函数是有返回值的
 *          function funName():type{
 *              return type;
 *          }
 *      如果没有返回值 则定义为 void
 *      实参和形参数量要一致
 *      实参和形参类型要一致
 *  可选参数：在参数后面+ ？
 *      function Hi(str?:string):void{
 *
 *      }
 *  默认值：如果参数有默认值则 可忽略
 *  剩余参数； ...xxx:type[]  必须放在函数最后面
 */
// 无参
function sayHello1() {
    var hello = "Hello,TypeScript!";
    console.log(hello);
}
// 有参
function sayHello2(word1, word2) {
    return word1 + "," + word2;
}
sayHello1();
alert(sayHello2("hello", "world"));
// 可选参数 在参数后面 + ？
function hi(str) {
    console.log("Hi~`");
}
hi();
// 默认值 
function add(a, b) {
    if (a === void 0) { a = 0; }
    if (b === void 0) { b = 0; }
    return a + b;
}
// 不传递实参
console.log(add());
// 传1个实参
console.log(add(1));
// 传两个实参
console.log(add(3, 4));
// 只传第二个实参 ********
console.log(add(undefined, 3));
// 剩余参数
function argu(flag) {
    var args = [];
    for (var _i = 1; _i < arguments.length; _i++) {
        args[_i - 1] = arguments[_i];
    }
    var result = 0;
    // for ...of 遍历元素
    // for ...in 遍历下标
    for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {
        var iterator = args_1[_a];
        if (flag === 0) {
            result += iterator;
        }
        else {
            result -= iterator;
        }
    }
    // for(let i =0;i<args.length;i++){
    //     if(flag===0){
    //         result+=args[i];
    //     }else{
    //         result-=args[i];
    //     }
    // }
    return result;
}
alert(argu(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
